package org.jsola.hr.helper;

import org.jsola.common.ClassKit;
import org.jsola.common.DateKit;
import org.jsola.common.SafeKit;
import org.jsola.hr.dto.CompanySysNoticeAddDTO;
import org.jsola.hr.dto.CompanySysNoticeUpdateDTO;
import org.jsola.hr.entity.CompanySysNoticeDO;
import org.jsola.hr.query.CompanySysNoticeQuery;
import org.jsola.hr.service.ICompanySysNoticeService;
import org.jsola.hr.vo.CompanySysNoticeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.Date;
import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 公司系统公告信息
 *
 * @author zhr
 */
@Component
public class CompanySysNoticeTestHelper extends BaseTestHelper {
    
    @Autowired
    private ICompanySysNoticeService companySysNoticeService;

    /**
     * 生成add测试数据
     * @return CompanySysNoticeAddDTO
     */
    public CompanySysNoticeAddDTO getCompanySysNoticeAddDTO(){
        CompanySysNoticeAddDTO companySysNoticeAddDTO = new CompanySysNoticeAddDTO();
        companySysNoticeAddDTO.setCompanyId(getRandomValue("varchar",32));
        companySysNoticeAddDTO.setTitle(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setContent(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setContentHasStyle(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setPublishUserId(getRandomValue("longtext",2147483647));
        companySysNoticeAddDTO.setPublishUserName(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setPublishDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        companySysNoticeAddDTO.setPublishEmpRangeIsAll(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        companySysNoticeAddDTO.setPublishEmpRange(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setPublishEmpTypeIsAll(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        companySysNoticeAddDTO.setPublishEmpType(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setFormalType(SafeKit.getInteger(getRandomValue("int",11)));
        companySysNoticeAddDTO.setFinalUserIds(getRandomValue("longtext",2147483647));
        companySysNoticeAddDTO.setOfflineDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        companySysNoticeAddDTO.setIsTop(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        companySysNoticeAddDTO.setTopDateCreate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        companySysNoticeAddDTO.setProps(getRandomValue("text",2147483647));
        companySysNoticeAddDTO.setNoticeType(getRandomValue("varchar",11));
        companySysNoticeAddDTO.setFile(getRandomValue("text",10000));
        return companySysNoticeAddDTO;
    }


    /**
     * 生成update测试数据
     * @return CompanySysNoticeUpdateDTO
     */
    public CompanySysNoticeUpdateDTO getCompanySysNoticeUpdateDTO(CompanySysNoticeVO companySysNoticeVO){
        return companySysNoticeService.selectDOById(companySysNoticeVO.getId(), SITE_ID).to(CompanySysNoticeUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return CompanySysNoticeQuery
     */
    public CompanySysNoticeQuery getCompanySysNoticeQuery() {
        CompanySysNoticeQuery companySysNoticeQuery = new CompanySysNoticeQuery();
        List<CompanySysNoticeDO> companySysNoticeDOList = companySysNoticeService.list(new CompanySysNoticeDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(companySysNoticeDOList)) {
            CompanySysNoticeDO companySysNoticeDO = companySysNoticeDOList.get(0);
            companySysNoticeQuery = companySysNoticeDO.to(CompanySysNoticeQuery.class);
            if (companySysNoticeDO.getPublishDate() != null) {
                companySysNoticeQuery.setPublishDateStart(DateKit.getBeforeDay(companySysNoticeDO.getPublishDate(),-1));
                companySysNoticeQuery.setPublishDateEnd(DateKit.getBeforeDay(companySysNoticeDO.getPublishDate(),1));
            }
            if (companySysNoticeDO.getOfflineDate() != null) {
                companySysNoticeQuery.setOfflineDateStart(DateKit.getBeforeDay(companySysNoticeDO.getOfflineDate(),-1));
                companySysNoticeQuery.setOfflineDateEnd(DateKit.getBeforeDay(companySysNoticeDO.getOfflineDate(),1));
            }
            if (companySysNoticeDO.getTopDateCreate() != null) {
                companySysNoticeQuery.setTopDateCreateStart(DateKit.getBeforeDay(companySysNoticeDO.getTopDateCreate(),-1));
                companySysNoticeQuery.setTopDateCreateEnd(DateKit.getBeforeDay(companySysNoticeDO.getTopDateCreate(),1));
            }
        }
        return companySysNoticeQuery;
    }

    /**
     * 保存示例
     * @return CompanySysNoticeVO
     */
    public CompanySysNoticeVO saveCompanySysNoticeExample(){
        CompanySysNoticeAddDTO addDTO = this.getCompanySysNoticeAddDTO();
        CompanySysNoticeVO companySysNoticeVO = companySysNoticeService.save(addDTO,buildTokenUser());
        return companySysNoticeVO;
    }


}

